package com.ruoyi.system.api.service.impl;

import java.util.List;
import java.util.Objects;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.api.domain.constant.ConfigKeys;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.api.mapper.ConfigurationMapper;
import com.ruoyi.system.api.domain.Configuration;
import com.ruoyi.system.api.service.IConfigurationService;
import com.ruoyi.common.core.text.Convert;

/**
 * 参数配置 参数配置Service业务层处理
 * 
 * @author shihx
 * @date 2020-03-23
 */
@Service
public class ConfigurationServiceImpl implements IConfigurationService 
{
    @Autowired
    private ConfigurationMapper configurationMapper;

    /**
     * 查询参数配置 参数配置
     * 
     * @param id 参数配置 参数配置ID
     * @return 参数配置 参数配置
     */
    @Override
    public Configuration selectConfigurationById(Long id)
    {
        return configurationMapper.selectConfigurationById(id);
    }

    /**
     * 查询参数配置 参数配置列表
     * 
     * @param configuration 参数配置 参数配置
     * @return 参数配置 参数配置
     */
    @Override
    public List<Configuration> selectConfigurationList(Configuration configuration)
    {
        return configurationMapper.selectConfigurationList(configuration);
    }

    /**
     * 新增参数配置 参数配置
     * 
     * @param configuration 参数配置 参数配置
     * @return 结果
     */
    @Override
    public int insertConfiguration(Configuration configuration)
    {
        configuration.setCreateTime(DateUtils.getNowDate());
        return configurationMapper.insertConfiguration(configuration);
    }

    /**
     * 修改参数配置 参数配置
     * 
     * @param configuration 参数配置 参数配置
     * @return 结果
     */
    @Override
    public int updateConfiguration(Configuration configuration)
    {
        configuration.setUpdateTime(DateUtils.getNowDate());
        return configurationMapper.updateConfiguration(configuration);
    }

    /**
     * 删除参数配置 参数配置对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteConfigurationByIds(String ids)
    {
        return configurationMapper.deleteConfigurationByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除参数配置 参数配置信息
     * 
     * @param id 参数配置 参数配置ID
     * @return 结果
     */
    @Override
    public int deleteConfigurationById(Long id)
    {
        return configurationMapper.deleteConfigurationById(id);
    }

    @Override
    public String selectConfigurationByKeys(ConfigKeys key)
    {
        Configuration configuration = configurationMapper.selectConfigurationByKey(key.getKey());
        if (Objects.isNull(configuration)) {
            return key.getDefaultValue();
        }

        return configuration.getValue();
    }
}
